package com.smallA.association.mapper;


import com.smallA.association.pojo.Client;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 用户表操作实体类
 *
 * @author wanda
 */
@Mapper
@Repository
public interface UserMapper {

    /**
     * 通过名称查询获取用户类
     *
     * @param username 账号名
     * @return 返回查询到的账号
     */
    Client findByName(String username);

    /**
     * 通过用户类注册账号
     *
     * @param user 用户类
     * @return 返回添加的数量
     */
    int insertUser(Client user);

    /**
     * 通过用户id添加角色
     *
     * @param id  用户id
     * @param rid 角色id
     * @return 返回添加的数量
     */
    int insertRoleByUserId(@Param("id") Integer id, @Param("rid") Integer rid);

    /**
     * 通过用户名查询用户
     *
     * @param username 用户名
     * @return 返回查询到的用户
     */
    Client selectUserByUserName(@Param("username") String username);

    /**
     * 通过用户id查询用户
     *
     * @param id 用户id
     * @return 返回查询结果
     */
    Client selectUserById(@Param("id") Integer id);

    /**
     * 修改账号状态为1
     *
     * @param username
     * @return 返回是否成功
     */
    int updateState(@Param("username") String username);

    /**
     * 更新用户表状态
     *
     * @param id    用户id
     * @param state 要修改的目标状态
     * @return 返回修改的个数
     */
    int updateStateById(@Param("id") Integer id, @Param("state") Integer state);

    /**
     * 查询所有注册的邮箱
     *
     * @return 返回所有注册的邮箱集合
     */
    List<Map<String, String>> selectAllEmail();


}
